#!/usr/bin/env python3
"""
AI Agent Pro - 快速启动演示脚本
"""

import asyncio
import os
import sys
from pathlib import Path

# 添加项目根目录到 Python 路径
project_root = Path(__file__).parent
backend_path = project_root / "backend"
sys.path.insert(0, str(backend_path))

# 设置基本环境变量
os.environ.setdefault("SECRET_KEY", "demo_secret_key_change_in_production")
os.environ.setdefault("DATABASE_URL", "sqlite:///demo.db")
os.environ.setdefault("REDIS_URL", "redis://localhost:6379/0")
os.environ.setdefault("ENVIRONMENT", "development")

from demo import main as run_demo


def print_banner():
    """打印启动横幅"""
    banner = """
╔══════════════════════════════════════════════════════════════╗
║                    🤖 AI Agent Pro 🤖                        ║
║                                                              ║
║              专业智能体开发平台演示系统                        ║
║                                                              ║
║  功能特性:                                                    ║
║  ✓ 多模型支持 (OpenAI GPT, Anthropic Claude)                ║
║  ✓ 可扩展工具系统                                            ║
║  ✓ 智能记忆管理                                              ║
║  ✓ 实时对话交互                                              ║
║  ✓ RESTful API 接口                                         ║
║  ✓ 完整监控系统                                              ║
║                                                              ║
║  开发者: AI Agent Pro 团队                                   ║
║  版本: v1.0.0                                               ║
╚══════════════════════════════════════════════════════════════╝
"""
    print(banner)


def print_requirements():
    """打印系统要求"""
    print("\n📋 系统要求:")
    print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
    print("• Python 3.9+")
    print("• 推荐: 8GB+ RAM")
    print("• 磁盘空间: 1GB+")
    print("• 网络连接 (用于AI API调用)")
    
    print("\n🔧 可选组件:")
    print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
    print("• PostgreSQL (生产环境推荐)")
    print("• Redis (缓存和会话)")
    print("• Docker & Docker Compose")


def print_setup_guide():
    """打印设置指南"""
    print("\n⚙️  快速设置指南:")
    print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
    print("1. 安装依赖:")
    print("   pip install -r backend/requirements.txt")
    print()
    print("2. 配置环境变量 (可选):")
    print("   cp .env.example .env")
    print("   # 编辑 .env 文件，添加你的 API 密钥")
    print()
    print("3. 启动完整服务 (生产环境):")
    print("   docker-compose up -d")
    print()
    print("4. 运行演示 (当前模式):")
    print("   python run.py")


def check_environment():
    """检查运行环境"""
    print("\n🔍 环境检查:")
    print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
    
    # 检查 Python 版本
    python_version = sys.version_info
    print(f"✓ Python 版本: {python_version.major}.{python_version.minor}.{python_version.micro}")
    
    if python_version < (3, 9):
        print("⚠️  警告: 推荐使用 Python 3.9 或更高版本")
    
    # 检查必要的包
    required_packages = [
        "fastapi",
        "uvicorn", 
        "pydantic",
        "asyncio"
    ]
    
    missing_packages = []
    for package in required_packages:
        try:
            __import__(package)
            print(f"✓ {package}")
        except ImportError:
            print(f"✗ {package} (缺失)")
            missing_packages.append(package)
    
    if missing_packages:
        print(f"\n⚠️  缺失依赖包: {', '.join(missing_packages)}")
        print("请运行: pip install -r backend/requirements.txt")
        return False
    
    return True


def print_next_steps():
    """打印后续步骤"""
    print("\n🚀 后续步骤:")
    print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
    print("1. 📖 阅读完整文档: README.md")
    print("2. 🔑 配置真实的 AI API 密钥")
    print("3. 🗄️  设置生产数据库 (PostgreSQL)")
    print("4. 🛠️  开发自定义工具")
    print("5. 🎨 自定义前端界面")
    print("6. 📊 配置监控和日志")
    print("7. 🚀 部署到生产环境")
    
    print("\n📚 学习资源:")
    print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
    print("• 开发文档: docs/")
    print("• API 文档: http://localhost:8000/docs (启动服务后)")
    print("• 示例代码: examples/")
    print("• 社区支持: GitHub Issues")


def print_demo_info():
    """打印演示信息"""
    print("\n🎯 演示内容:")
    print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
    print("• 智能体创建与配置")
    print("• 多轮对话交互")
    print("• 流式响应演示")
    print("• 工具系统展示")
    print("• 性能统计分析")
    
    print("\n💡 演示特点:")
    print("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")
    print("• 📱 无需外部依赖")
    print("• 🎭 模拟 AI 模型响应")
    print("• 🛠️  展示完整工具链")
    print("• 📊 实时状态监控")
    print("• 🔒 安全参数验证")


async def main():
    """主函数"""
    print_banner()
    print_requirements()
    print_setup_guide()
    
    # 检查环境
    if not check_environment():
        print("\n❌ 环境检查失败，请先安装必要的依赖包")
        return
    
    print_demo_info()
    
    print("\n" + "="*60)
    input("按 Enter 键开始演示...")
    print("="*60)
    
    try:
        # 运行演示
        await run_demo()
        
    except KeyboardInterrupt:
        print("\n\n👋 演示被用户中断")
    except Exception as e:
        print(f"\n❌ 演示过程中发生错误: {str(e)}")
        import traceback
        traceback.print_exc()
    
    print_next_steps()
    
    print("\n" + "="*60)
    print("感谢使用 AI Agent Pro! 🎉")
    print("如有问题，请查看文档或提交 Issue")
    print("="*60)


if __name__ == "__main__":
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        print("\n👋 再见!")
    except Exception as e:
        print(f"启动失败: {str(e)}")
        sys.exit(1)